package com.unifig.organ.controller;

import com.unifig.organ.dto.PageUtils;
import com.unifig.organ.model.SysOssEntity;
import com.unifig.organ.service.UmsSysConfigService;
import com.unifig.organ.dto.R;
import com.unifig.organ.service.UmsSysOssService;
import com.unifig.utils.Constant;
import com.unifig.utils.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;

import java.util.List;
import java.util.Map;

/**
 * 文件上传Controller
 *
 *
 *
 * @date 2018-10-24
 */
@RestController
@RequestMapping("sys/oss")
@ApiIgnore
public class UmsSysOssController {
    @Autowired
    private UmsSysOssService sysOssService;
    @Autowired
    private UmsSysConfigService sysConfigService;

    private final static String KEY = Constant.CLOUD_STORAGE_CONFIG_KEY;

    /**
     * 列表
     *
     * @param params 请求参数
     * @return R
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params) {
        //查询列表数据
        Query query = new Query(params);
        List<SysOssEntity> sysOssList = sysOssService.queryList(query);
        int total = sysOssService.queryTotal(query);

        PageUtils pageUtil = new PageUtils(sysOssList, total, query.getLimit(), query.getPage());

        return R.ok().put("page", pageUtil);
    }


//    /**
//     * 获取云存储配置信息
//     *
//     * @return R
//     */
//    @RequestMapping("/config")
//    public R config() {
//        CloudStorageConfig config = sysConfigService.getConfigObject(KEY, CloudStorageConfig.class);
//
//        return R.ok().put("config", config);
//    }


//    /**
//     * 保存云存储配置信息
//     *
//     * @param config 配置信息
//     * @return R
//     */
//    @SysLog("保存云存储配置信息")
//    @RequestMapping("/saveConfig")
//    public R saveConfig(@RequestBody CloudStorageConfig config) {
//        //校验类型
//        ValidatorUtils.validateEntity(config);
//
//        if (config.getType() == Constant.CloudService.QINIU.getValue()) {
//            //校验七牛数据
//            ValidatorUtils.validateEntity(config, QiniuGroup.class);
//        } else if (config.getType() == Constant.CloudService.ALIYUN.getValue()) {
//            //校验阿里云数据
//            ValidatorUtils.validateEntity(config, AliyunGroup.class);
//        } else if (config.getType() == Constant.CloudService.QCLOUD.getValue()) {
//            //校验腾讯云数据
//            ValidatorUtils.validateEntity(config, QcloudGroup.class);
//        }
//
//        sysConfigService.updateValueByKey(KEY, JSON.toJSONString(config));
//
//        return R.ok();
//    }

//    /**
//     * 上传文件
//     *
//     * @param file 文件
//     * @return R
//     * @throws Exception 异常
//     */
//    @RequestMapping("/upload")
//    public R upload(@RequestParam("file") MultipartFile file) throws Exception {
//        if (file.isEmpty()) {
//            throw new RRException("上传文件不能为空");
//        }
//        //上传文件
//        String url = OSSFactory.build().upload(file);
//
//        //保存文件信息
//        SysOssEntity ossEntity = new SysOssEntity();
//        ossEntity.setUrl(url);
//        ossEntity.setCreateDate(new Date());
//        sysOssService.save(ossEntity);
//
//        R r = new R();
//        r.put("url", url);
//        r.put("link", url);
//        return r;
//    }
//
//
//    /**
//     * 删除图片
//     *
//     * @param ids 主键集
//     * @return R
//     */
//    @SysLog("删除图片")
//    @RequestMapping("/delete")
//    public R delete(@RequestBody Long[] ids) {
//        sysOssService.deleteBatch(ids);
//
//        return R.ok();
//    }
//
//    /**
//     * 查询所有列表
//     *
//     * @param params 请求参数
//     * @return R
//     */
//    @RequestMapping("/queryAll")
//    public List<String> queryAll(@RequestParam Map<String, Object> params) {
//        //查询列表数据
//        List<SysOssEntity> sysOssList = sysOssService.queryList(params);
//
//        List<String> list = new ArrayList<>();
//        if (null != sysOssList && sysOssList.size() > 0) {
//            for (SysOssEntity item : sysOssList) {
//                list.add(item.getUrl());
//            }
//        }
//        return list;
//    }
}
